AI 초보자의 LLM 공부 기록 다섯 번째

AI 초보자의 LLM 공부 기록 다섯 번째

LLM에 대하여 초보자의 시선으로 알아본 내용을 기록한 글 그 다섯 번째입니다.
Clock Icon2024.11.26

안녕하세요 클래스메소드의 이수재입니다.
저번 글에 이은 다섯 번째 글입니다.
https://dev.classmethod.jp/articles/sujae-study-of-llm-4/
이 시리즈는 쉽고 빠르게 익히는 실전 LLM이라는 책을 베이스로 공부한 내용을 글로 남기는 것이 목적입니다.

이번 글에서는 실제로 간단한 파인 튜닝을 해보며 결과가 개선되는 것을 확인해보겠습니다

환경

앞으로는 OpenAI의 API를 이용하여 파인튜닝을 진행해나갈 예정입니다.
코드는 Python으로 작성할 예정입니다.
따라서 제가 작성하는 글은 기본적으로 아래 환경에서 진행됩니다.

  • openai : 1.55.0
  • Python : 3.13.0

OpenAI API Key 만들기

우선 API를 이용하기 위해 API Key를 작성합니다.
아래 순서와 마지막 확인 코드까지 모두 OpenAI 의 quickstart의 내용과 비슷합니다.

  1. OpenAI에 회원가입 및 로그인 합니다.
  2. 그럼 아래와 같이 문서 페이지가 나옵니다. 오른쪽 위의 프로필을 클릭하여 [Your Profile]로 들어갑니다.
    ai1
  3. 개인으로 이용한다면 Organization을 별도로 지정할 필요는 없습니다. 여러가지 프로젝트를 진행할 예정이고 프로젝트 별로 API 키가 필요하다면 Projects에서 프로젝트를 생성합니다. 저는 Default Project에서 키를 만들겠습니다.
  4. API Keys에서 키를 생성합니다. 생성된 키는 화면을 벗어나면 다시 확인할 수 없으니 제대로 저장해둡니다.
  5. 발급한 키는 환경 변수(OPENAI_API_KEY)에 저장해두거나 외부 스토리지에 저장하여 읽어 올 수 있게 설정합니다.

크레딧 충전

OpenAI는 API 요청의 토큰 당 비용이 발생합니다.

크레딧이 부족할 때 API 요청을 보내면 다음과 같은 에러가 발생합니다.

...
openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

따라서 이용을 위해서는 크레딧을 충전해야합니다.
충전은 Billing 메뉴에서 가능하며 [Add Payment details]를 클릭하여 결제 카드를 등록하고 크레딧을 충전합니다.
충전할 때 필요에 따라 자동 충전(automatic recharge)을 활성화 합니다.
기본 값으로 활성화가 되어 있으니 주의해주세요.

일정 금액이 되면 알람을 받거나 사용을 중지하고 싶은 경우 Usage limits에서 설정 가능합니다.
필요에 따라 알람을 설정합니다.
주의 사항에 적혀있듯이 프로덕션 환경에서 사용하는경우 Budget Limit을 설정하면 사용 자체가 중단되므로 설정을 하지 않고 알람만 설정하거나 문제가 없는 범위의 비용으로 설정할 필요가 있습니다.
ai3

설정 확인하기

크레딧 충전까지 마무리 하였다면 다음 코드를 실행하여 값이 출력되는지 확인해봅니다.

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {
            "role": "user",
            "content": "Write a haiku about recursion in programming."
        }
    ]
)

print(completion.choices[0].message)

ChatGPT의 모델

24년 5월에 공개된 4o가 가장 최신 모델이며 모델 별로 비용이 다릅니다.
https://openai.com/api/pricing/

모델 별로 특화되어 있는 부분이 다르며 목적에 맞추어 모델을 이용하는 것이 좋습니다.
모델에 대한 개요는 다음 페이지를 참고해주세요.
https://platform.openai.com/docs/models

임베딩 해보기

ChatGPT를 이용하여 이전 글에서 설명했었던 임베딩을 얻을 수 있습니다.

실행하는 코드는 다음과 같습니다.
앞으로 실행하는 코드도 아래의 구성에서 크게 벗어나지 않습니다.

from openai import OpenAI
client = OpenAI()

MODEL = 'text-embedding-ada-002'

embedded_text = client.embeddings.create(
    model=MODEL,
    input="LLM을 공부해보자",
    encoding_format="float"
)

print(len(embedded_text.data[0].embedding))

python을 모르는 분들도 이해할 수 있도록 간략히 설명을 하자면

client = OpenAI()는 openai를 이용할 수 있도록 인스턴스를 만드는 것입니다.
이 부분에서 에러가 발생한다면 API키가 설정되어 있지않은 경우가 많습니다.
별도의 지정이 없다면 API 키는 OPENAI_API_KEY 환경 변수에서 가져오며, 환경 변수를 사용할 수 없다면 가장먼저 openai.api_key = '...'로 API 키를 지정해야합니다.

openai를 조정하기 위해 다른 방식으로 설정하는 것도 가능하지만 기본적으로는 이 형식으로 지정하는 것을 권장하고 있습니다.
https://github.com/openai/openai-python?tab=readme-ov-file#module-level-client
비동기적 처리가 필요한 경우에는 client = AsyncOpenAI()로 지정하는 것도 가능합니다.

MODEL = 'text-embedding-ada-002'에서 사용할 모델을 지정합니다.
사용 목적에 따라 다양한 모델을 제공하고 있습니다. 어떤 모델을 쓰는게 좋을지 OpenAI의 문서를 확인할 필요가 있습니다.

embedded_text = client.embeddings.create ... 임베딩을 요청하고 그 결과를 받아오는 부분입니다.
위에서 설정한 모델과 임베딩이 필요한 텍스트를 매개변수로 실행합니다.
encoding_format은 결과의 반환 형식을 지정하며 float 또는 base64 가 지정가능합니다.
이 외에 임베딩을 생성할 때 지정 가능한 매개변수는 다음 페이지를 참고해주세요.
https://platform.openai.com/docs/api-reference/embeddings/create

마무리

책의 내용을 이어서 알아가기 위해 OpenAI의 API를 사용하는 방법에 대해 간략히 알아보았습니다.
다음 글부터는 지금까지 알아봤던 다양한 튜닝 방법에 대하여 알아보겠습니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940 지메일로 보내주시면 감사합니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.